package cl.orangepeople.whyem.portal.backend.api.utils;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Utilidad para manipulacion de fechas.
 * 
 * @author seba
 */
public class FechaUtils implements Serializable {

    private final static Logger logger;

    static {
	logger = LoggerFactory.getLogger(FechaUtils.class);
    }

    public static XMLGregorianCalendar getGregorianCalendar(Date fecha) {
        XMLGregorianCalendar xmlGregorianCalendar = null;
        try {
            Date tiempo = fecha;

            if (tiempo == null) {
                tiempo = new Date();
            }

            GregorianCalendar cal = new GregorianCalendar();
            cal.setTime(tiempo);

            xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
            xmlGregorianCalendar.setMillisecond(DatatypeConstants.FIELD_UNDEFINED);
            xmlGregorianCalendar.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
        } catch (Exception e) {
            xmlGregorianCalendar = null; 
            logger.error("Error en creacion de objeto XMLGregorianCalendar", e);
        }
        
        return xmlGregorianCalendar;
    }
    
    public static String getActualDateTimestamp() {
	Date date = new Date();
	DateFormat timestampFormatter = new SimpleDateFormat("YYYYMMddHHmmss");
	timestampFormatter.setTimeZone(TimeZone.getTimeZone("America/Santiago"));
	
	return timestampFormatter.format(date);
    }
    
    public static XMLGregorianCalendar getGregorianCalendar() {
        return FechaUtils.getGregorianCalendar(new Date());
    }
}